package notify

import (
	"context"
	"time"
)

// NotifyService 通知服务接口
type NotifyService interface {
	Send(ctx context.Context, message *Message) error
	GetStatus(ctx context.Context, messageID string) (*MessageStatus, error)
}

// Message 通知消息
type Message struct {
	ID       string
	Type     string
	Content  interface{}
	Priority int
	Retry    *RetryPolicy
}

// RetryPolicy 重试策略
type RetryPolicy struct {
	MaxAttempts int
	Interval    time.Duration
	MaxInterval time.Duration
}

// MessageStatus 消息状态
type MessageStatus struct {
	ID       string
	Status   string
	SendTime time.Time
	Error    error
	Attempts int
}
